package com.yida.wy.vote.outside.service;

import com.yida.wy.common.domain.request.WyOwnerLoginRequest;
import com.yida.wy.vote.outside.domain.dto.*;
import com.yida.wy.vote.outside.domain.request.WyVoteOwnerProjectQueryRequest;
import com.yida.wy.vote.outside.domain.request.WyVoteResultRequest;

import java.util.List;

/**
 * 业主投票端Service接口
 *
 * @author lqq
 * @date 2023-03-17
 */
public interface IWyVoteOwnerService {

    /**
     * 校验用户信息
     *
     * @param request 请求
     * @return 投票业主集合
     */
    List<WyVoteResultDTO> checkOwnerInfo(WyOwnerLoginRequest request);


    /**
     * 根据登录的业主电话获取电话号码靠前的用户
     *
     * @param results    相关业主信息
     * @param loginPhone 登录的业主电话
     * @return 投票业主集合
     */
    List<Long> getOwnerResultIds(List<WyVoteResultDTO> results, String loginPhone);

    /**
     * 查询业主可投票项目列表
     *
     * @param request 请求参数
     * @return 投票项目集合
     */
    List<WyVoteOwnerProjectListDTO> selectVoteOwnerProjectList(WyVoteOwnerProjectQueryRequest request);

    /**
     * 用户投票
     *
     * @param request 投票结果
     * @return 结果
     */
    boolean addOrUpdateVoteResult(WyVoteResultRequest request);

    /**
     * 投票详情
     *
     * @param voteId   投票ID
     * @param resultId 用户投票结果ID
     * @return 结果
     */
    WyVoteOwnerProjectDetailDTO voteDetail(Long voteId, Long resultId);

    /**
     * 投票详情
     *
     * @param voteId   投票ID
     * @param resultId 用户投票结果ID
     * @return 结果
     */
    WyVoteOwnerGwjProjectDetailDTO voteGwjDetail(Long voteId, Long resultId);

    /**
     * 业主票根
     *
     * @param voteId   投票ID
     * @param resultId 用户投票结果ID
     * @return 结果
     */
    WyVoteOwnerTicketStubDetailDTO ticketStub(Long voteId, Long resultId);

}
